1. Field of the Invention
This invention relates in general to a relational database management system, and in particular, to memory management on a parallel processing database system.
2. Description of Related Art
The purpose of this invention is to enable kernel addressable, user accessible memory segments. The problem is to enable such capabilities in a parallel processing relational database management system (RDBMS) that can execute on both WINDOWS NT(trademark) and UNIX operating systems for both symmetric multi-processing (SMP) and massively parallel processing (MPP) hardware architectures. The problem for the RDBMS is to design it in such a manner as to allow the RDBMS to execute independent of operating system models.
To accommodate the various operating systems, kernel addressable, user accessible memory segments must be controllable by a single entity within the system and be lockable and coherent among multiple processes. To provide these abilities in the UNIX environment, a page table of database processes may be directly modified. However, such direct page table modification is not available or possible in the WINDOWS NT operating system. Further, a number of requirements exist for the passing of segments between a parent and child process, and between user processes and kernel threads. Such requirements are in direct contradiction to the WINDOWS NT shared memory model.
To overcome the limitations in the prior art described above, and to overcome other limitations that will become apparent upon reading and understanding the present specification, the present invention discloses a parallel processing architecture for a relational database management system (RDBMS) that manages and allocates memory as mappings of offsets from a file storage location to one or more threads. The RDBMS is implemented as a shared nothing, single database image utilizing Parallel Database Extensions (PDEs) comprised of various subsystems for managing memory and providing storage locations for threads.
Embodiments provide for a segment (SEG) subsystem of the PDE that provides services for creating, manipulating, and destroying access to data segments in address space. The SEG subsystem works with transient segments (also referred to as scratch segments) that are created during initialization of the PDE as offsets in a file. The offsets are stored in objects/elements in a queue.